// 1. 导入所需的包
import Vue from 'vue'
import Vuex from 'vuex'
import user from './modeles/user'
// import todo from './modules/todo'

// 2. 将Vuex注册为Vue的插件
Vue.use(Vuex)

// 3. 创建 store 实例对象
// 存储库中，如何存储数据，写同步方法，异步方法，计算属性
const store = new Vuex.Store({
  namespaced: true, // 开启命名空间
  /* 这里配置Vuex */
  state: {
    // 用于存储数据
    age: 20,
    username: 'zhangsan'
  },
  // 计算属性，不支持修改
  getters: {
    // 第一个参数固定为state
    pf (state) {
      return state.age * state.age
    }
  },
  mutations: {
    // 同步方法，作用是修改state数据，是唯一方案
    // 第一个参数是state
    updateAge (state, n) {
      state.age += n
    }
  },
  actions: {
    // 调用异步方法，第一个参数是store
    updateAgeAfter3s (store, m) {
      setTimeout(() => {
        store.commit('updateAge', m)
      }, 3000)
    }
  },
  modules: {
    user: user
    // todo: todo
  }
})
// 4. 导出 store 对象
export default store
